当前位置:  开发笔记 > 编程语言 > 正文

在`forEach`函数里面`return`关键字是什么意思?

如何解决《在`forEach`函数里面`return`关键字是什么意思?》经验,为你挑选了2个好方法。

$('button').click(function () {
   [1, 2, 3, 4, 5].forEach(function (n) {
      if (n == 3) {
         // it should break out here and doesn't alert anything after
         return false
      }
      alert(n)      
   })
})

我的问题:虽然我打电话,为什么它仍会提醒下一个号码return?就像:忽略下面的代码并继续下一个元素



1> squaleLis..:

来自Mozilla开发者网络:

forEach()除了抛出异常之外,没有办法阻止或破坏循环.如果您需要这样的行为,该forEach()方法是错误的工具.

提前终止可通过以下方式完成:

一个简单的循环

一个for......of 循环

Array.prototype.every()

Array.prototype.some()

Array.prototype.find()

Array.prototype.findIndex()

另一个阵列的方法:every(),some(),find(),和findIndex()测试使用谓词返回truthy值的数组元素,以确定是否需要进一步的迭代.


使用`forEach`和trowing一个错误来停止迭代是一个非常糟糕的做法,并且是一个真正的矫枉过正.在你的情况下,你真的不想迭代所有**的数组(forEach ...),但你想运行直到满足某些语句.你应该使用一个简单的循环(`while`,`for`,`for in`,`do while`).
我同意@RonenCypis ...并建议你使用`some()`

2> Ronen Cypis..:

return退出当前功能,但反复不断,所以你得到的"下一个"项目是跳过if和警报的4 ...

如果你需要停止循环,你应该使用如下的普通for循环:

$('button').click(function () {
   var arr = [1, 2, 3, 4, 5];
   for(var i = 0; i < arr.length; i++) {
     var n = arr[i]; 
     if (n == 3) {
         break;
      }
      alert(n);
   })
})

你可以在这里阅读更多关于js break&continue的信息:http://www.w3schools.com/js/js_break.asp


你什么意思???为了便于理解,我写了这样的代码......代码可能会缩短一点,但它可以得到你想要的,没有额外的数组迭代,就像其他答案一样:-)
你已经在你的例子中声明了数组,我只是为它添加了一个引用(var arr)以便于访问.您还可以将`for`循环更改为`for in`或`while` ...所有这些选项都要好得多,然后创建新函数的速度要快得多,并在此处的其他示例中抛出错误.性能明智,清洁代码......无论如何好运:-)
这个答案解决了我的确切问题,即有时仍然需要在“ forEach”循环中返回是否有意义,当您不希望在特定条件下执行循环逻辑的其余部分时,绝对可以这样做!
推荐阅读
帆侮听我悄悄说星星
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有